home *** CD-ROM | disk | FTP | other *** search
/ Game.EXE 2001 January / Game.EXE_01_2001.iso / demos / Blade of Darkness / data1.cab / Program_Executable_Files / Lib / LoadBar.py < prev    next >
Encoding:
Python Source  |  2000-11-16  |  5.3 KB  |  210 lines

  1.  
  2.  
  3. import BBLib
  4. import Raster
  5. import Bladex
  6.  
  7.  
  8.  
  9. ##BAR_X=63.0
  10. ##BAR_Y=399.0
  11. BAR_X=64.0
  12. BAR_Y=425.0
  13.  
  14.  
  15.  
  16.  
  17. class BaseProgressBar:
  18.   "Clase base de las barras de progreso de carga"
  19.  
  20.   def __init__(self,total_increments):
  21.     self.total_increments=total_increments
  22.     self.RectSize=(512.0,16.0)
  23.     self.SolidBar=0
  24.     self.hBmpBar=None
  25.     self.PrefixText="Loading "
  26.  
  27.     if not self.SolidBar:
  28.       Bladex.ReadBitMap("../../Data/Gray_progress_bar.bmp","LoadBarBmp")
  29.       self.hBmpBar=Raster.BmpHandle("LoadBarBmp")
  30.  
  31.   def __del__(self):
  32.     self.Clear()
  33.  
  34.   def Clear(self):
  35.     pass
  36.  
  37.  
  38.   def BarIncrement(self,n_file,text):
  39.  
  40.     if Raster.ClassIdName()=="B_Direct3DRasterDevice":
  41.       if n_file%10:
  42.         return
  43.  
  44.     str="%s%s."%(self.PrefixText,text)
  45.     percentage=float(n_file)/float(self.total_increments)
  46.     if percentage>1.0:
  47.       percentage=1.0
  48.  
  49.     w,h=Raster.GetSize()
  50.  
  51.     AdjustedRectWidth=self.RectSize[0]*w/640.0
  52.     AdjustedRectHeight=self.RectSize[1]*h/480.0
  53.  
  54.     Raster.Cls(0,0,0)
  55.     Raster.SetAlpha(0.8)
  56.  
  57.     percentage_width=percentage*self.RectSize[0]
  58.  
  59.     AdjustedRectX=BAR_X*w/640.0
  60.     AdjustedRectY=BAR_Y*h/480.0
  61.  
  62.  
  63.     x1=AdjustedRectX
  64.     x2=x1+AdjustedRectWidth
  65.     y1=AdjustedRectY
  66.     y2=AdjustedRectY+AdjustedRectHeight
  67.     Raster.SetPenColor(0,0,0);
  68.     Raster.Rectangle(x1,y1,x2,y2)
  69.  
  70.     if self.SolidBar==1:
  71.       x2=x1+percentage*AdjustedRectWidth
  72.       Raster.SetFillColor(140,220,10);
  73.       Raster.SolidRectangle(x1,y1,x2,y2)
  74.     else:
  75.       Raster.SetPosition(x1,y1)
  76.       Raster.SetPenColor(180,23,44)
  77.       Raster.DrawBitmap(self.hBmpBar,percentage*AdjustedRectWidth,AdjustedRectHeight)
  78.       Raster.SetPosition(0,0)
  79.  
  80.  
  81.     Raster.SysWrite(10,h-25,str,240,240,20)
  82.     Raster.SwapBuffers()
  83.  
  84.  
  85.  
  86. class BackImageBar:
  87.   def __init__(self,background_image=None):
  88.     self.imagehook=0
  89.     if background_image:
  90.       back_image=BBLib.B_BitMap24()
  91.       if back_image.ReadFromFile(background_image):
  92.         w,h=back_image.GetDimension()
  93.         Raster.SetBackgroundImage(w,h,"RGB","Normal","Stretch",back_image.GetData())
  94.         Raster.Cls(0,0,0)
  95.         Raster.SwapBuffers()
  96.         self.imagehook=1
  97.  
  98.  
  99.  
  100.  
  101.   def Clear(self):
  102.     if self.imagehook:
  103.       Raster.RemoveBackgroundImage()
  104.       self.imagehook=0
  105.  
  106.  
  107.  
  108. class ProgressBar(BaseProgressBar,BackImageBar):
  109.   "Clase auxiliar para poner una barra de progreso durante la carga de un nivel"
  110.  
  111.   def __init__(self,total_increments,background_image=None,auto_remove=1):
  112.     BaseProgressBar.__init__(self,total_increments)
  113.     BackImageBar.__init__(self,background_image)
  114.  
  115.     BBLib.ResetnOpenedInputFiles()
  116.     BBLib.SetOnOpenInputFileFunc(self.BarIncrement)
  117.     self.filehook=1
  118.  
  119.     if auto_remove:
  120.       Bladex.AddScheduledFunc(0,self.Clear,())
  121.  
  122.  
  123.   def Clear(self):
  124.     BaseProgressBar.Clear(self)
  125.     BackImageBar.Clear(self)
  126.     if self.filehook:
  127.       BBLib.RemoveOnOpenInputFileFunc()
  128.       self.filehook=0
  129.  
  130.  
  131.  
  132.  
  133. class AutoProgressBar(BaseProgressBar,BackImageBar):
  134.  
  135.   def __init__(self,total_increments,prefix_text="Loading",background_image=None):
  136.  
  137.     BaseProgressBar.__init__(self,total_increments)
  138.     BackImageBar.__init__(self,background_image)
  139.     self.CurrentPoint=0
  140.     self.PrefixText=prefix_text
  141.  
  142.   def Increment(self,text=""):
  143.     self.CurrentPoint=self.CurrentPoint+1
  144.     self.BarIncrement(self.CurrentPoint,text)
  145.  
  146.   def Clear(self):
  147.     BaseProgressBar.Clear(self)
  148.     BackImageBar.Clear(self)    
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157. class ECTSProgressBar(ProgressBar):
  158.   def __init__(self,total_increments,background_image=None,auto_remove=1):
  159.     ProgressBar.__init__(self,total_increments,background_image)
  160.     self.updated=0
  161.  
  162.   def BarIncrement(self,n_file,text):
  163.  
  164.     if n_file>self.total_increments/2 and not self.updated:
  165.       BBLib.RemoveOnOpenInputFileFunc()
  166.       back_image=BBLib.B_BitMap24()
  167.       if back_image.ReadFromFile("Blade_progress2.jpg"):
  168.         Raster.RemoveBackgroundImage()
  169.         w,h=back_image.GetDimension()
  170.         Raster.SetBackgroundImage(w,h,"RGB","Normal","Stretch",back_image.GetData())
  171.         Raster.Cls(0,0,0)
  172.         Raster.SwapBuffers()
  173.  
  174.       self.updated=1
  175.       BBLib.SetOnOpenInputFileFunc(self.BarIncrement)
  176.  
  177.     ProgressBar.BarIncrement(self,n_file,text)
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184. class DemoProgressBar(ProgressBar):
  185.   def __init__(self,total_increments,background_image=None):
  186.     self.updated=1
  187.     self.segment_size=total_increments/4
  188.     ProgressBar.__init__(self,total_increments,background_image)
  189.  
  190.   def BarIncrement(self,n_file,text):
  191.  
  192.     if Raster.ClassIdName()=="B_Direct3DRasterDevice":
  193.       if n_file%10:
  194.         return
  195.  
  196.     if (n_file>3*self.segment_size and self.updated==3) or (n_file>2*self.segment_size and self.updated==2) or (n_file>self.segment_size and self.updated==1):
  197.       BBLib.RemoveOnOpenInputFileFunc()
  198.       back_image=BBLib.B_BitMap24()
  199.       if back_image.ReadFromFile("Blade_progress"+`self.updated+1`+".jpg"):
  200.         Raster.RemoveBackgroundImage()
  201.         w,h=back_image.GetDimension()
  202.         Raster.SetBackgroundImage(w,h,"RGB","Normal","Stretch",back_image.GetData())
  203.         Raster.Cls(0,0,0)
  204.         Raster.SwapBuffers()
  205.  
  206.       self.updated=self.updated+1
  207.       BBLib.SetOnOpenInputFileFunc(self.BarIncrement)
  208.  
  209.     ProgressBar.BarIncrement(self,n_file,text)
  210.